package com.yuncheng.spcyApi.constant.flow;

import com.yuncheng.spcyApi.constant.common.SpcyConstant;
import org.springframework.stereotype.Component;

@Component(value = "hfrwFlowConstant")
public class HfrwFlowConstant implements FlowConstant {

    public static String FILE_TYPE = "回访任务文件";
    public static String LCZT_BLZ  = "办理中";

    public static String HFZT_WHF  = "未回访";
    public static String HFZT_HFZ  = "回访中";
    public static String HFZT_YHF  = "已回访";

    /**
     *
     * 主流程如下：
     *
     * （1）回访计划（质量管理与科研科办理，从已移送库选择对象，可选本次回访的和候补的、回访时间、回访地点）
     * （2）回访计划审核（质量管理与科研科科长办理）
     * （3）回访计划审批（质量管理与科研科科长办理）
     * （4）回访计划实施（质量管理与科研科办理，支持以下操作：发给每个企业一个函；将企业按辖区归入对应的分局，
     *      一个区域一个函；支持分发二维码或者短信，受访企业可以线上填写回访记录；
     *      需要能按各个企业上传对应的回访记录；可以选反馈意见处置科室，填写对应的反馈意见，处置截止时间，选接科室受人）
     * （5）回访结果审核（质量管理与科研科科长办理）
     * （6）回访结果审批（质量管理与科研科分管力领导办理）
     * （7）反馈意见处置（质量管理与科研科办理，支持各科室完成以后自动提交）
     * （8）归档办结（质量管理与科研科办理，生产台账）
     *
     * 回访结果审批环节提交以后，按照回访计划实施环节选定的反馈意见处置科室生成子流程，
     * 如果没选馈意见处置科室就不生成子流程。
     *
     * 子流程如下：
     *
     * (1)科室签收（选定的接收人办理）
     * (2)填处置措施（选择的处置人办理，支持上传多个附件）
     * (3)科室审核（对应科室科长办理）
     * (4)分管领导审核（对应科室分管领导）
     * 结束
     *
     */

    public final static String NODENAME = "回访计划,回访计划审核,回访计划审批,回访计划实施,回访结果审核,回访结果审批,反馈意见处置,归档办结";

    public final static String NODENAME_SP = "回访计划,回访计划审核,回访计划审批,回访计划实施,回访结果审核,回访结果审批,反馈意见处置,归档办结";

    public final static String SUB_NODENAME = "科室签收,填处置措施,科室审核,分管领导审核";

    public final static String HJMC_HFJH = "回访计划";
    public final static String HJMC_HFJHSH = "回访计划审核";
    public final static String HJMC_HFJHSP = "回访计划审批";
    public final static String HJMC_HFJHSS = "回访计划实施";
    public final static String HJMC_HFJGSH = "回访结果审核";
    public final static String HJMC_HFJGSP = "回访结果审批";
    public final static String HJMC_FKYJCZ = "反馈意见处置";
    public final static String HJMC_GDBJ = "归档办结";

    public final static String SUB_HJMC_KSQS = "科室签收";
    public final static String SUB_HJMC_TCZCS = "填处置措施";
    public final static String SUB_HJMC_KSSH = "科室审核";
    public final static String SUB_HJMC_FGLDSH = "分管领导审核";

    // 流程办理按钮类型 - 保存
    public final static String SUBMIT_TYPE_SAVE = "0";

    // 流程办理按钮类型 - 提交
    public final static String SUBMIT_TYPE_SUBMIT = "1";

    // 获取第一环节
    public String getFirstNode(){
        String nodeNameList[] = NODENAME.split(",");
        return nodeNameList[0];
    }

    // 获取子流程第一个环节
    public String getSubFirstNode(){
        String nodeNameList[] = SUB_NODENAME.split(",");
        return nodeNameList[0];
    }

    public  String getBlfs(String nodeName){
        return SpcyConstant.BLFS_DRJJ;
    }

    @Override
    public String getFywflcode() {
        return "hfrwZhuFLow001";
    }

    @Override
    public String getFlowName() {
        return "回访任务主流程";
    }

    // 获取子流程-下环节名称
    public static String getSubNextNodeName(String nowNodeName){
        String nodeNameList[] = SUB_NODENAME.split(",");
        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i == nodeNameList.length-1){
                    return HJMC_LCJS;
                }else {
                    return nodeNameList[i+1];
                }
            }
        }
        return "";
    }

    // 获取下环节名称
    public  String getNextNodeName(String nowNodeName){
        String nodeNameList[] = NODENAME.split(",");
        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i == nodeNameList.length-1){
                    return HJMC_LCJS;
                }else {
                    return nodeNameList[i+1];
                }
            }
        }
        return "";
    }

    // 获取上一个环节名称
    public String getPreviousName(String nowNodeName){
        String[] nodeNameList = NODENAME.split(",");

        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i==0){
                    return nodeNameList[i];
                }else {
                    int perviousI = i-1; // 上一个环节名称
                    return nodeNameList[perviousI];
                }
            }
        }
        return "";
    }

    // 获取子流程上一个环节名称
    public String getPreviousSubName(String nowNodeName){
        String[] nodeNameList = SUB_NODENAME.split(",");

        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i==0){
                    return nodeNameList[i];
                }else {
                    int perviousI = i-1; // 上一个环节名称
                    return nodeNameList[perviousI];
                }
            }
        }
        return "";
    }

    // 获取审评下环节名称
    public String getSpNextNodeName(String nowNodeName){
        String nodeNameList[] = NODENAME_SP.split(",");
        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i == nodeNameList.length-1){
                    return HJMC_LCJS;
                }else {
                    return nodeNameList[i+1];
                }
            }
        }
        return "";
    }

    // 获取审评上环节名称
    public String getSpPreviousName(String nowNodeName){
        String[] nodeNameList = NODENAME_SP.split(",");

        for (int i=0; i<nodeNameList.length; i++){
            if (nodeNameList[i].equals(nowNodeName)){
                if (i==0){
                    return nodeNameList[i];
                }else {
                    int perviousI = i-1; // 上一个环节名称
                    return nodeNameList[perviousI];
                }
            }
        }
        return "";
    }
}
